home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Grab Bag
/
Shareware Grab Bag.iso
/
090
/
ciarnv85.arc
/
SAVEME.4TH
< prev
next >
Wrap
Text File
|
1986-04-08
|
2KB
|
64 lines
( SAVEME.4TH )
( This program allows the user to save a version of FORTH which includes )
( a dictionary of voice vocabulary words. The voice vocabulary resides in )
( a separate segment of memory, and it will be loaded into memory when )
( FORTH is loaded. )
HEX
: ZCAT SWAP ( Z1 Z2 -- > CONTCATINATES 0 TERMINATE STRINGS )
BEGIN DUP C@ WHILE 1+ REPEAT ( FIND THE END OF Z1 )
BEGIN OVER C@ DUP WHILE OVER C! 1 1 D+ REPEAT OVER C!
DDROP ;
: VSEG DSEGMENT 1000 + ; ( VOICE IS IN NEXT SEGMENT )
CREATE VLOC 0 , ( NEXT AVAILABLE BYTE IN VOICE SEGMENT )
C" .COM" ".COM
CODE VSYS ( VOICE SEGMENT FUNCTION CALLS )
AX POP ( FUNCTION )
CX POP ( NUMBER OF BYTES )
DX POP ( LOCATION )
DS POP ( SEGMENT ADDR )
BX POP ( FILE HANDLE )
INT21
AX PUSH
AX, CS MOV
DS, AX MOV
AX, # 0 MOV
HERE 3 + JB
AX INC
AX PUSH
NEXT JMP END-CODE
: VCALL VSYS IF 0 ELSE 0 SWAP THEN IOERR ! ;
: IOCHK IOERR @ IF ." IOERR #" IOERR ? ABORT THEN ;
C" A: " VDF ( VOICE FILE DISK )
C" XEVOICE.BIN" VDFN ( VOICE FILENAME )
CREATE FHNDL 0 , ( variable holding the file handle of the device XE1 )
CREATE VOC 1 , ( Flag for read of voice file )
CTAG
: SAVEME FREEZE 0 FHNDL ! 1 VOC ! ZWORD DUP C@ 41 U<
IF DROP CR ." Name of file to save in (omit .COM)? " QUERY ZWORD THEN
DUP ".COM ZCAT
0 VDF C!
DUP 1+ C@ 3A = ( Disk qualification for system )
IF DUP C@ VDF C! 3A VDF 1+ C! THEN ( Yes, remember for voice )
0 VDF 2+ C!
CR ." Writing file '" DUP ZTYPE ." '" CR
DUP 0 FCREAT IOCHK
DUP 100 HERE FF - FWRITE HERE FF - - ABORT" WROTE SHORT."
FCLOSE IOCHK
." Did the voice dictionary change? " KEY DUP EMIT CR 20 OR 79 =
IF
VDF VDFN ZCAT ." Writing file '" VDF ZTYPE ." '" CR
VDF 0 FCREAT IOCHK
DUP VSEG 0 VLOC @ 4000 VCALL VLOC @ - ABORT" WROTE SHORT." ( VOICE )
FCLOSE IOCHK
THEN ;
CTAG